package com.baidu.sggc.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 审计日志实体类
 */
@Data
@TableName("audit_log")
public class AuditLog {

    /**
     * 主键（自增ID）
     */
    private Long pk;

    /**
     * 用户ID（必填）
     */
    private String userId;

    /**
     * 组织ID（可选）
     */
    private String organizationId;

    /**
     * 项目ID（可选）
     */
    private String projectId;

    /**
     * 模块名称（必填）
     */
    private String module;

    /**
     * 审计对象（必填，如操作的资源名称）
     */
    private String auditObject;

    /**
     * 操作类型（必填，如create/update/delete）
     */
    private String operation;

    /**
     * 操作说明（可选，详细描述）
     */
    private String message;

    /**
     * 访问地址（必填，如IP或URL）
     */
    private String accessAddress;

    /**
     * 操作时间（必填）
     */
    @JsonFormat(pattern = "yyyy年MM月dd日HH时mm分ss秒", timezone = "GMT+8")
    private LocalDateTime operateTime;

    /**
     * 操作状态（可选，如success/failed）
     */
    private String operateState;

    /**
     * 事件类型（可选，如登录/业务操作）
     */
    private String eventType;

    /**
     * 平台类型（必填，如PC/APP/小程序）
     */
    private String platform;

    /**
     * 应用名称（可选，如系统名称）
     */
    private String appName;

    /**
     * 菜单路径（可选，操作对应的菜单路径）
     */
    private String menuPath;

    /**
     * 扩展数据（可选，JSON格式自定义数据）
     */
    private String extendData;

    /**
     * 用户姓名（必填，操作人姓名）
     */
    private String userName;
}